热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WSDM'20|如何构建推荐系统中的商品知识图谱

XuD,RuanC,KorpeogluE,etal.ProductKnowledgeGraphEmbeddingforE-commerce[C]Proceedingsofthe13

 


Xu D, Ruan C, Korpeoglu E, et al. Product Knowledge Graph Embedding for E-commerce[C] //Proceedings of the 13th International Conference on Web Search and Data Mining. 2020: 672-680.


 

,欢迎关注公众号:论文收割机(paper_reader)
因为排版问题,很多图片和公式无法直接显示,欢迎关注我们的公众号点击目录来阅读原文。

引言



 

 

本文将介绍如何构建推荐系统中商品知识图谱(product knowledge graph, PKG),并如何通过该知识图谱来学习图嵌入(graph embedding)。

 

本文将商品知识图谱与一般的知识图谱(knowledge graph, KG)进行类比,并阐释为何一般知识图谱中的图嵌入学习方法无法直接使用在商品知识图谱的图嵌入学习中。

 

同时,基于自注意力机制(self-attention),本文提出了一个学习分布表示学习(distributed representation learning)的模型,该模型能够实现端到端(end-to-end)的商品知识图谱的嵌入学习。

 

为了学习到实体(entity)间的复杂结构信息,poincare embedding(hyperbolic embedding)也将被使用。该实验模型在大规模的walmart商品推荐系统上测试,并完成了知识补全(knowledge completion),搜索排序(search ranking)以及推荐的任务。

 

 

PKG中的商品关系



 


  • product与product之间的关系包括互补关系(complement/cobuy),同时浏览(co-view),以及相互替代(substitute)关系。这些关系在以前的工作中【1,2】已经被研究过。如图中所示,无线音箱和TV是互补的关系,或者遥控器和电视机也是互补的关系。而两种类似的电视机之间就是相互替代的关系。

 


  • 除了product之间的关系之外,产品和自然语言之间的关系也是非常重要的。一个描述性词汇(description)与产品之间的关系是describe的关系,而通过关键词来搜索出的产品与该关键词之间的关系是search关系。

 


  • 基于描述性词汇的,产品能被分入不同层级的类别中,比如一个电视机是属于TV&Videos这个类,而遥控器则是属于TV accessories类别。因此,这种层级化(hierarchical)的类别关系能够被定义成IsA的关系。

 


  • 产品与产品之间的关系,或者产品与词语(word)之间的关系,其实能够被细分成为更具体的关系。比如,complement关系可以被细分成AddOn,AccessoryTo, PartOf等更加具体的互补关系。而‘’word describe product‘的关系,可以被分解成HasAttribute, Brand, Name等关系。

 

 

学习PKG中的embedding



 

 

现有的KG中embedding学习的方法主要是通过将entities和relations映射到一个低维的连续向量空间中,并同时保持原有的几何结构特性。

 

比如通过学习translational distance的TransE, TransH, TransR和TransD等方法。以及学习隐语义相似度(latent semantic similarity)的RESCAL, DistMult, HolE和ComplEx等模型。

 

KG中embedding的学习是基于其中的事实(facts)具有高度合理性(plausibility)的假设,而PKG却与之不同:

在电子商务(e-commerce)的场景中,除了describe和IsA关系能够直接清晰的定义,complement,co-view,substitute和search的关系都需要从用户历史的数据中提取。


比如,两种coffee的产品可能从标题和品牌上来看都是非常相似的,但是它们却不具有substitute的关系,原因是其中一种是无咖啡因的,另一种是含咖啡因的。因此,用户替代选择的记录就能更好的找到两种产品之间的substitute关系。

 

同时,在电子商务的场景下,PKG的学习也具有噪声(noise)以及稀疏(sparsity)的问题。如果提取关系不是足够复杂(complicated),那么product category的非常规树结构会导致其就很难被嵌入到欧式空间(Euclidean space)中。而且,产品的描述词有时也会充满与describe关系并不相关的干扰词语(noise words)。

 

1. 与自然语言处理中的翻译(translation)模型结合

 

为了解决noise 的问题,最终模型的优化目标本质上是一个离散事件序列学习,与神经机器语言翻译(neural machine language translation)问题相同。

例如:

[. . . ,soap, detergent, toothbrush , towel → toothpaste, . . .].

我们希望从该序列中提取出toothpaste 和toothbrush的complement关系。


也就是说该序列能够被翻译成toothpaste这个product,同时toothbrush是该产品输入序列中与该toothpaste最相关的产品。

 

产品描述性关系的提取也是类似,比如ice cream被{The strawberry  ice cream featured by Haagan-Dazs is the marriage of sweet summer strawberries to cream and . . .}描述。

 

因此该冰淇淋的flavor和brand应该具有最高的注意力值(attention),也就是说该描述被“翻译”成strawberry Haggan-Dazs ice cream。所以,文中提出了改进版的自注意力网络(self-attention network)来提取有噪声的product描述信息和用户活动数据。

 

2. 多模态多任务学习(multi-modal and multi-task learning)

 

为了解决稀疏性的问题,本文使用了multi-task multi-modal learning的思想。customer view, purchase, search, substitute 记录,以及产品描述和分类信息都能够成为数据源。

 

为了更好的找到产品关系之间的相关性,并且学习多种任务,本文使用了propagation rule(信息传播)来建立多种任务之间的关联性。比如可替换的产品或者相似的产品之间,往往也会具有更相似的complement,co-view,substitute关系,同时也会与相似的word之间具有describe和search等关系。

 

3. Poincare ball embedding spaces 


由于PKG之间的空间结构信息非常丰富,同时由于欧式空间中对树状结构信息(层级结构信息)的嵌入并不能够很好的学习,因为从双曲空间(hyperbolic spaces)来学习流形结构(manifold structure)会成为一个更好的选择。

 

 

整体模型方法(Methodology)



 

1. Distributed representation

 

Distributed representation是基于这样的假设:在相似的上下文出现的词语之间将会具有更加相似的representation。


Translation模型, 例如TransE就是基于这样的假设,两个词语之间的表示通过其之间的关系表示来等价。


比如king − men ≈ queen − women,而两者间的关系是通过royal来等价的。所以在KG中,只需要学习到royal这个关系的向量表示,那么只需要已知由该关系连接的其中一个node men,那么另外一个node king的表示也能够相应计算出即king=men+royal。


但是,直接学习关系向量对于PKG来说并不合理,比如complement这种关系,如果仅用一个向量来学习是不够的,因为complement关系在实际中语义更加丰富,比如结构上的complement,功能上的complement,或者enhancement也是complement的一种,所以我们将不直接学习一个complement向量,而是通过相似的学习方法(比如同时多次出现在购买记录中表示complement关系)来学习到某种特定的关系。

 

2. substitute关系的学习

 

当substitute数据是可以获取的时候,可以直接通过产品的embedding来建立substitute关系,同时由于substitute关系是对称的,因此可以直接通过word2vec模型来学习基于substitute关系的embedding。

 

3 利用自注意力(self-attention)机制来学习complement,co-view,describe以及search关系

 

关系数据来源:


  • complement:purchase records

  • co-view:view records

  • search:search records

  • describe:产品描述(description)

 

自注意力中的embedding层

首先每个entity以及其对应的位置信息(position)都能够被表示成一个向量,因为将entity sequence截断成最长为l长的序列之后,输入和输出的embedding表示为:

Self-attention层原来是基于query,key和value的网络,本文将隐层的信息表示成基于权重的输入embedding和:

其中的权重$\alpha$是由输入的embedding和输出的embedding共同决定的:

但是由于$\alpha$是embedding直接内积,所以为了不影响self-attention层的信息表示,在输入和输出层之前加入两层网络来增加参数:

因此,对于purchase和view数据,最终的预测层将是用前l个entities来预测第l+1个entity输出的embedding:

对于description和search数据,其实是希望能够找到前l个entities与第l+1个输入entity的embedding的关系,因此对于该数据的预测层是:

最后的loss function就是将数据中所有出现的序列求和计算。

 

4. Poincare embedding来学习分类层级信息和IsA关系

 

两个catogery的词语,c1和c2之间的层级关系,其实在双曲空间中能够更好保持,该度量用

来表示。因此,最终的两个category之间是否有对应关系也是用与word2vec model类似的函数:

而product与category word之间的IsA关系是用:

函数来学习的。C是表示category word的embedding。

 

5 Multi-task training

 

 

所有的embedding几乎都参与到各个不同任务中,而每个任务之间的网络参数又并不能够直接共享,所以本文通过在【3】中描述的多任务学习框架:1)每次随机选择一个任务来训练,

2)每次训练的数据是所有数据中的一部分,

3)sampling的数据按照其原有数据量的大小成正比。

4)最后训练将以在validation 数据集上不在提高表现为准。

 

6 整体框架

 

 

实验



 

主要的实验就是为了验证设计的PKG是有效的,同时multi-task multi-modal学习的框架是有效的。最终的实验回答了以下几个问题:

 


  1. multi-task学习框架是否合理?

  2. 除了知识补全(knowledge completion),PKG如何提升在下游(downstream)的任务表现?

  3. 为什么KG直接应用在e-commerce的数据上是不可行的?

  4. 本文提出的方法是否比直接用KG的方法来学产品间的关系更好?

 

1 数据

 

products:14万的grocery产品

description:每个产品有一段文本描述,通常为20-100词。

category:每个产品都在一个种类分类下,总有有1198个次分类,228个大分类,28个department,9个super-department。

session 数据:约四百万条view,purchase,search和被点击的search结果。

substitute:7万个产品间的可替代信息。

PRG的建立:通过对session数据的统计,首先建立一个初步的有权PKG,之后通过random walk找到top-k的相关邻居,再将其与相关的邻居相连接。

 

2 对比结果

 

实验对比了Translation based模型以及latent semantic 模型。No PRG代表不进行random walk来筛选邻居,而直接使用原始数据。

由于篇幅限制,不再详细介绍实验的具体细节,可以自行搜索该文章进行阅读。

 

 

总结



 

 

本文介绍了如何建立PKG,并且如何在eCommerce的场景下来学习embedding。但是有几个问题本文并没有很好的回答:

 


  • attention 的系数为什么仅用输入和输出的embedding来得到,而不是像NLP model中的attention weights?

 


  • 通过翻译模型来理解sequence,但是第l个entity与前l-1个entities之间的位置信息关系可能并不是非常相关?

 


  • 在eCommerce场景下非常重要的user信息该如何变成PKG的一部分呢?

 

相关文章:


  • Slides | 利用知识图网络做常识推理

  • SIGIR‘19 | 图神经网络协同过滤算法-Neural Graph Collaborative Filtering

  • QQ音乐上市,让我们来谈谈音乐播放器中的推荐算法

  • 一文读懂自注意力机制:8大步骤图解+代码

References



 

[1] Julian McAuley, Rahul Pandey, and Jure Leskovec. 2015. Inferring networks of substitutable and complementary products. In Proceedings of the 21th ACM SIGKDD international conference on knowledge discovery and data mining. ACM, 785–794.

[2] Yin Zhang, Haokai Lu, Wei Niu, and James Caverlee. 2018. Quality-aware neural complementary item recommendation. In Proceedings of the 12th ACM Conference on Recommender Systems. ACM, 77–85.

[3] Victor Sanh, Thomas Wolf, and Sebastian Ruder. 2019. A hierarchical multi-task approach for learning embeddings from semantic tasks. In Proceedings of the AAAI Conference on Artificial Intelligence, Vol. 33. 6949–6956.

[4] Xu, Da, et al. "Product Knowledge Graph Embedding for E-commerce." Proceedings of the 13th International Conference on Web Search and Data Mining. 2020.

 

阅读原文

 

,欢迎关注公众号:论文收割机(paper_reader)
因为排版问题,很多图片和公式无法直接显示,欢迎关注我们的公众号点击目录来阅读原文。


推荐阅读
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
author-avatar
殉情放开那只小兔子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有